/**
 * The instantiation of the ability abstract class.
 *
 * @author Levester Chaney
 * @version 0.0.1
 */

#include "abstractTypes.h"

ability :: ability()
{
	this->name = new char(MAX_STRING_SIZE);
	this->trainable = false;
}

ability :: ability(char* name)
{
	this->name = new char(MAX_STRING_SIZE);
	this->trainable = false;
}

ability :: ability(char* name, bool trainable)
{
	this->name = new char(MAX_STRING_SIZE);
	this->trainable = trainable;
}

ability :: ~ability()
{
	// destroys this object
	delete this->name;
}

char*
ability :: getName() const
{
	return this->name;
}

bool
ability :: isTrainable() const
{
	return this->trainable;
}

void
ability :: boost()
{
	this->level++;
}

void
ability :: decay()
{
	this->level--;
}